/*
 *對一個一維數組中的對象進行排序
 * @example _userArr = [{id:10,name:'lmzd',num:10},{id:11,name:'lmzd1',num:11},{id:12,name:'lmzd2',num:12}]
 * @param arrobj array 數組
 * @param item string 對象標籤
 * @param flag unit 1為升序，2為降序
 *
 * var _test = [ { id:10, name:'lmzd', num:10 }, { id:11, name:'lmzd1', num:9 }, { id:12, name:'lmzd2', num:12 } ];
 * _test = sortArrByObj(_test,'num',1);
 */
function sortArrByObj(arrObj,item) {
	var _temp = new Array();
	for ( var i in arrObj ) {
		var _temp_push = false;
		if ( _temp.length > 0 ) {
			for ( var v in _temp ) {
				if ( arrObj[i][item] < _temp[v][item] ) {
					_temp.splice(v,0,arrObj[i]);
					_temp_push = true;
					break;
				}
			}
		}
		if ( _temp_push == false ) {
			_temp.push(arrObj[i]);
		}
	}
	return _temp;
}
/*var _test = [ { id:10, name:'lmzd', num:10 }, { id:11, name:'lmzd1', num:9 }, { id:12, name:'lmzd2', num:12 } ];
_test = sortTest(_test, 'num');*/
/**
 * 數組過濾
 * @param	r_arr	初始數組
 * @param	r_filter	待過濾數組
 */
function filterArr(r_arr,r_filter) {
	for ( var i in r_arr ) {
		for ( var v in r_filter ) {
			if ( r_filter[v] == r_arr[i] ) {
				r_arr.splice(i, 1);
			}
		}
	}
	return r_arr;
}
/**
 * 合併兩個數組，將r_sub_arr加到r_arr的後面
 * @param	r_arr		數組一
 * @param	r_sub_arr	數組二
 * @return	array		返回合併後的新數組
 */
function concatArr(r_arr,r_sub_arr) {
	r_arr = (r_arr == null) ? [] : r_arr;
	for each (var v in r_sub_arr) {
		r_arr.push(v);
	}
	return r_arr;
}
/**
 * 一維數組數字排序
 * @param	r_arr	原數組
 * @param	r_desc	排序方式	desc為降序，asc為升序（默認）
 */
function arraySort(r_arr, r_desc) {
	if (r_desc == "desc") {
		r_arr.sort(function(y,x){return parseInt(x)-parseInt(y);});
	}else {
		r_arr.sort(function(x,y){return parseInt(x)-parseInt(y);});
	}
	return r_arr;
}
/**
 * "{\"msg\":\"VERIFY_TIME_OUT\",\"number\":3,\"result\":\"73741ea570def1d114a9ac9bb6726916\"}";
 * 字符串轉換為obj
 * @param	r_str
 */
function stringToObject(r_str) {
	var _json = __json.JSONObject(r_str);
	return __JSONObject2ASNative(_json);
}
/**
 * 檢查數組中是否有這個r_val值
 * @param	r_val
 * @param	r_arr
 */
function in_array(r_val, r_arr) {	
	if (typeof(r_arr) == 'array') {		
		for (var v in r_arr) {
			if (r_arr[v] == r_val ) {		
				v = (v == 0) ? true : v;
				return v;
			}
		}
	}
	return false;
}
/**
 * @param r_type int	日期格式　默認為2010-02-04 16:29:29
 * @return 返回當前日期時間
 */
function getDate(r_type) {
	r_type = (r_type == undefined) ? 1 : r_type;
	var _type = '';
	switch(r_type) {
		case 0:
			_type = "yyyyMMddHHmmss";
			break;
		case 1:
			_type = "yyyy-MM-dd HH:mm:ss";
			break;
		case 2:
			_type = "yyyy-MM-dd";
			break;
		case 3:
			_type = "HH:mm:ss";
			break;
		case 4:
			_type = "HH-mm-ss";
			break;		
	}
	var _date = new java.util.Date;
	var _formatter = new java.text.SimpleDateFormat(_type);
	return String(_formatter.format(_date));
}
/**
 * 獲取時間戳
 */
function getTime() 
{
		var now=new Date();
		var hour=now.getHours();
		var minutes=now.getMinutes();
		var seconds = now.getSeconds(); 
		var year = now.getFullYear();
		var month = now.getMonth();
		var date = now.getDate();
		var time = Date.UTC(year, month, date, hour, minutes, seconds);
		return Math.floor(time/1000);
}

/**
 * 從一個對象中檢查是否存在該參數
 * @param	r_param	需要檢查的參數名
 * @param	r_obj	待檢查的對象
 * @return	boolean	存在與否
 */
function chkParam(r_param,r_obj) {
	if (r_param in r_obj) {
		return true;
	}
	return false;
}
/**
 * 获取一个随机的范围Number值
 * @param	num
 */
function number(num) {
	return Math.random() * num;
}               
/**
 * 取隨機數,返回结果范围：num1 >= num > num2
 * @param	num1
 * @param	num2
 */
function random(num1, num2) {
	var num  = number(num2 - num1) + num1;
	num = Math.floor(num);
	return num;
}
function getRandom(min, max) {	
    return Math.floor(Math.random() * (max - min + 1)) + min;	
}
/**
 * 檢查一個元素是否存在一個數組中，並可以檢查是否哼等於
 * @param	needle
 * @param	haystack
 * @param	argStrict
 */
function in_array(needle, haystack, argStrict) {
    var key = '';
	var strict = !!argStrict; 
    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) {
                return true;
			}
        }
    } else {
        for (key in haystack) {
            if (haystack[key] == needle) {
				return true;
            }
        }
    }
     return false;
}
/**
 * 删除指定数组中的指定元素
 * 
 */
function array_remove(r_arr,r_data) {
	if (r_arr) {
		for (var i = 0; i < r_arr.length; i++ ) {
			if (r_arr[i] == r_data) {
				r_arr.splice(i, 1);
			}			
		}
	}
	return r_arr;
}
/**
 * 计算阶乘
 * @param	r_a	
 * @param	r_b
 */
function factorial(r_a,r_b) {
	r_b = Math.floor(r_b);  // 如果这个数不是一个整数，则向下舍入。
	if (r_b < 0)  {  // 如果这个数小于 0，拒绝接收。
		return -1;
	}
	if (r_b == 0)  {  // 如果为 0，则其阶乘为 1。
		return 1;
	}
	else return (r_a * factorial(r_a,(r_b - 1)));  // 否则，递归直至完成。
}

/**
 * 向客户端发送数据
 * @param	r_cmd
 * @param	r_data
 * @param	r_users
 */
function send(r_cmd, r_data, r_users)
{
	var _params = { };
	_params._cmd = r_cmd;
	_params.dataObj = r_data;			
	_server.sendResponse(_params, -1, null, r_users, 'json');
}
